Cardioid linkage

Move generator point G

Locus

A = Point(a)
B = Point(a)
c = Circle(A, B)
d = Circle(A, 2 * Distance[A, B])
C = Intersect(d, a, 2)
g = Segment(A, C)
G = Point(d)
b = Segment(A, G)
e = Line(B, b)
E, F = Intersect(c, e)
f = Segment(A, F)
G_1 = Midpoint(G, F)
A' = Mirror(A, G_1)
h = Segment(G, A')
A'' = Mirror(A', F)
i = Segment(A', A'')
loc1 = Locus(A'', G)
j = false